<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd">
<html><head><title>QStyledItemDelegate Class Reference</title><style>h3.fn,span.fn { margin-left: 1cm; text-indent: -1cm }
a:link { color: #004faf; text-decoration: none }
a:visited { color: #672967; text-decoration: none }
td.postheader { font-family: sans-serif }
tr.address { font-family: sans-serif }
body { background: #ffffff; color: black; }
</style></head><body><table border="0" cellpadding="0" cellspacing="0" width="100%"><tr /><td align="left" valign="top" width="32"><img align="left" border="0" height="32" src="images/rb-logo.png" width="32" /></td><td width="1">&#160;&#160;</td><td class="postheader" valign="center"><a href="index.html"><font color="#004faf">Home</font></a>&#160;&#183; <a href="classes.html"><font color="#004faf">All Classes</font></a>&#160;&#183; <a href="modules.html"><font color="#004faf">Modules</font></a></td></table><h1 align="center">QStyledItemDelegate Class Reference<br /><sup><sup>[<a href="qtgui.html">QtGui</a> module]</sup></sup></h1><p>The QStyledItemDelegate class provides display and editing
facilities for data items from a model. <a href="#details">More...</a></p>

<p>Inherits <a href="qabstractitemdelegate.html">QAbstractItemDelegate</a>.</p><h3>Methods</h3><ul><li><div class="fn" /><b><a href="qstyleditemdelegate.html#QStyledItemDelegate">__init__</a></b> (<i>self</i>, QObject&#160;<i>parent</i>&#160;=&#160;None)</li><li><div class="fn" />QWidget <b><a href="qstyleditemdelegate.html#createEditor">createEditor</a></b> (<i>self</i>, QWidget&#160;<i>parent</i>, QStyleOptionViewItem&#160;<i>option</i>, QModelIndex&#160;<i>index</i>)</li><li><div class="fn" />QString <b><a href="qstyleditemdelegate.html#displayText">displayText</a></b> (<i>self</i>, QVariant&#160;<i>value</i>, QLocale&#160;<i>locale</i>)</li><li><div class="fn" />bool <b><a href="qstyleditemdelegate.html#editorEvent">editorEvent</a></b> (<i>self</i>, QEvent&#160;<i>event</i>, QAbstractItemModel&#160;<i>model</i>, QStyleOptionViewItem&#160;<i>option</i>, QModelIndex&#160;<i>index</i>)</li><li><div class="fn" />bool <b><a href="qstyleditemdelegate.html#eventFilter">eventFilter</a></b> (<i>self</i>, QObject&#160;<i>object</i>, QEvent&#160;<i>event</i>)</li><li><div class="fn" /><b><a href="qstyleditemdelegate.html#initStyleOption">initStyleOption</a></b> (<i>self</i>, QStyleOptionViewItem&#160;<i>option</i>, QModelIndex&#160;<i>index</i>)</li><li><div class="fn" />QItemEditorFactory <b><a href="qstyleditemdelegate.html#itemEditorFactory">itemEditorFactory</a></b> (<i>self</i>)</li><li><div class="fn" /><b><a href="qstyleditemdelegate.html#paint">paint</a></b> (<i>self</i>, QPainter&#160;<i>painter</i>, QStyleOptionViewItem&#160;<i>option</i>, QModelIndex&#160;<i>index</i>)</li><li><div class="fn" /><b><a href="qstyleditemdelegate.html#setEditorData">setEditorData</a></b> (<i>self</i>, QWidget&#160;<i>editor</i>, QModelIndex&#160;<i>index</i>)</li><li><div class="fn" /><b><a href="qstyleditemdelegate.html#setItemEditorFactory">setItemEditorFactory</a></b> (<i>self</i>, QItemEditorFactory&#160;<i>factory</i>)</li><li><div class="fn" /><b><a href="qstyleditemdelegate.html#setModelData">setModelData</a></b> (<i>self</i>, QWidget&#160;<i>editor</i>, QAbstractItemModel&#160;<i>model</i>, QModelIndex&#160;<i>index</i>)</li><li><div class="fn" />QSize <b><a href="qstyleditemdelegate.html#sizeHint">sizeHint</a></b> (<i>self</i>, QStyleOptionViewItem&#160;<i>option</i>, QModelIndex&#160;<i>index</i>)</li><li><div class="fn" /><b><a href="qstyleditemdelegate.html#updateEditorGeometry">updateEditorGeometry</a></b> (<i>self</i>, QWidget&#160;<i>editor</i>, QStyleOptionViewItem&#160;<i>option</i>, QModelIndex&#160;<i>index</i>)</li></ul><a name="details" /><hr /><h2>Detailed Description</h2><p>The QStyledItemDelegate class provides display and editing
facilities for data items from a model.</p>
<p>When displaying data from models in Qt item views, e.g., a
<a href="qtableview.html">QTableView</a>, the individual items are
drawn by a delegate. Also, when an item is edited, it provides an
editor widget, which is placed on top of the item view while
editing takes place. QStyledItemDelegate is the default delegate
for all Qt item views, and is installed upon them when they are
created.</p>
<p>The QStyledItemDelegate class is one of the <a href="model-view.html">Model/View Classes</a> and is part of Qt's
<a href="model-view-programming.html">model/view framework</a>. The
delegate allows the display and editing of items to be developed
independently from the model and view.</p>
<p>The data of items in models are assigned an <a href="qt.html#ItemDataRole-enum">ItemDataRole</a>; each item can store a
<a href="qvariant.html">QVariant</a> for each role.
QStyledItemDelegate implements display and editing for the most
common datatypes expected by users, including booleans, integers,
and strings.</p>
<p>The data will be drawn differently depending on which role they
have in the model. The following table describes the roles and the
data types the delegate can handle for each of them. It is often
sufficient to ensure that the model returns appropriate data for
each of the roles to determine the appearance of items in
views.</p>
<table class="generic">
<thead>
<tr class="qt-style">
<th>Role</th>
<th>Accepted Types</th>
</tr>
</thead>
<tr class="odd" valign="top">
<td><a href="qt.html#ItemDataRole-enum">Qt.BackgroundRole</a></td>
<td><a href="qbrush.html">QBrush</a></td>
</tr>
<tr class="even" valign="top">
<td><a href="qt.html#ItemDataRole-enum">Qt.BackgroundColorRole</a></td>
<td><a href="qcolor.html">QColor</a> (obsolete; use <a href="qt.html#ItemDataRole-enum">Qt.BackgroundRole</a> instead)</td>
</tr>
<tr class="odd" valign="top">
<td><a href="qt.html#ItemDataRole-enum">Qt.CheckStateRole</a></td>
<td><a href="qt.html#CheckState-enum">Qt.CheckState</a></td>
</tr>
<tr class="even" valign="top">
<td><a href="qt.html#ItemDataRole-enum">Qt.DecorationRole</a></td>
<td><a href="qicon.html">QIcon</a>, <a href="qpixmap.html">QPixmap</a>, <a href="qimage.html">QImage</a> and
<a href="qcolor.html">QColor</a></td>
</tr>
<tr class="odd" valign="top">
<td><a href="qt.html#ItemDataRole-enum">Qt.DisplayRole</a></td>
<td><a href="qstring.html">QString</a> and types with a string
representation</td>
</tr>
<tr class="even" valign="top">
<td><a href="qt.html#ItemDataRole-enum">Qt.EditRole</a></td>
<td>See <a href="qitemeditorfactory.html">QItemEditorFactory</a>
for details</td>
</tr>
<tr class="odd" valign="top">
<td><a href="qt.html#ItemDataRole-enum">Qt.FontRole</a></td>
<td><a href="qfont.html">QFont</a></td>
</tr>
<tr class="even" valign="top">
<td><a href="qt.html#ItemDataRole-enum">Qt.SizeHintRole</a></td>
<td><a href="qsize.html">QSize</a></td>
</tr>
<tr class="odd" valign="top">
<td><a href="qt.html#ItemDataRole-enum">Qt.TextAlignmentRole</a></td>
<td><a href="qt.html#AlignmentFlag-enum">Qt.Alignment</a></td>
</tr>
<tr class="even" valign="top">
<td><a href="qt.html#ItemDataRole-enum">Qt.ForegroundRole</a></td>
<td><a href="qbrush.html">QBrush</a></td>
</tr>
<tr class="odd" valign="top">
<td><a href="qt.html#ItemDataRole-enum">Qt.TextColorRole</a></td>
<td><a href="qcolor.html">QColor</a> (obsolete; use <a href="qt.html#ItemDataRole-enum">Qt.ForegroundRole</a> instead)</td>
</tr>
</table>
<p>Editors are created with a <a href="qitemeditorfactory.html">QItemEditorFactory</a>; a default static
instance provided by <a href="qitemeditorfactory.html">QItemEditorFactory</a> is installed on
all item delegates. You can set a custom factory using <a href="qstyleditemdelegate.html#setItemEditorFactory">setItemEditorFactory</a>()
or set a new default factory with <a href="qitemeditorfactory.html#setDefaultFactory">QItemEditorFactory.setDefaultFactory</a>().
It is the data stored in the item model with the <a href="qt.html#ItemDataRole-enum">EditRole</a> that is edited. See the
<a href="qitemeditorfactory.html">QItemEditorFactory</a> class for
a more high-level introduction to item editor factories. The
<a href="itemviews-coloreditorfactory.html">Color Editor
Factory</a> example shows how to create custom editors with a
factory.</p>
<a id="subclassing-qstyleditemdelegate" name="subclassing-qstyleditemdelegate" />
<h3>Subclassing QStyledItemDelegate</h3>
<p>If the delegate does not support painting of the data types you
need or you want to customize the drawing of items, you need to
subclass QStyledItemDelegate, and reimplement <a href="qstyleditemdelegate.html#paint">paint</a>() and possibly <a href="qstyleditemdelegate.html#sizeHint">sizeHint</a>(). The <a href="qstyleditemdelegate.html#paint">paint</a>() function is called
individually for each item, and with <a href="qstyleditemdelegate.html#sizeHint">sizeHint</a>(), you can specify
the hint for each of them.</p>
<p>When reimplementing <a href="qstyleditemdelegate.html#paint">paint</a>(), one would typically
handle the datatypes one would like to draw and use the superclass
implementation for other types.</p>
<p>The painting of check box indicators are performed by the
current style. The style also specifies the size and the bounding
rectangles in which to draw the data for the different data roles.
The bounding rectangle of the item itself is also calculated by the
style. When drawing already supported datatypes, it is therefore a
good idea to ask the style for these bounding rectangles. The
<a href="qstyle.html">QStyle</a> class description describes this
in more detail.</p>
<p>If you wish to change any of the bounding rectangles calculated
by the style or the painting of check box indicators, you can
subclass <a href="qstyle.html">QStyle</a>. Note, however, that the
size of the items can also be affected by reimplementing <a href="qstyleditemdelegate.html#sizeHint">sizeHint</a>().</p>
<p>It is possible for a custom delegate to provide editors without
the use of an editor item factory. In this case, the following
virtual functions must be reimplemented:</p>
<ul>
<li><a href="qstyleditemdelegate.html#createEditor">createEditor</a>() returns
the widget used to change data from the model and can be
reimplemented to customize editing behavior.</li>
<li><a href="qstyleditemdelegate.html#setEditorData">setEditorData</a>()
provides the widget with data to manipulate.</li>
<li><a href="qstyleditemdelegate.html#updateEditorGeometry">updateEditorGeometry</a>()
ensures that the editor is displayed correctly with respect to the
item view.</li>
<li><a href="qstyleditemdelegate.html#setModelData">setModelData</a>() returns
updated data to the model.</li>
</ul>
<p>The <a href="itemviews-stardelegate.html">Star Delegate</a>
example creates editors by reimplementing these methods.</p>
<a id="qstyleditemdelegate-vs-qitemdelegate" name="qstyleditemdelegate-vs-qitemdelegate" />
<h3>QStyledItemDelegate vs. QItemDelegate</h3>
<p>Since Qt 4.4, there are two delegate classes: <a href="qitemdelegate.html">QItemDelegate</a> and QStyledItemDelegate.
However, the default delegate is QStyledItemDelegate. These two
classes are independent alternatives to painting and providing
editors for items in views. The difference between them is that
QStyledItemDelegate uses the current style to paint its items. We
therefore recommend using QStyledItemDelegate as the base class
when implementing custom delegates or when working with Qt style
sheets. The code required for either class should be equal unless
the custom delegate needs to use the style for drawing.</p>
<p>If you wish to customize the painting of item views, you should
implement a custom style. Please see the <a href="qstyle.html">QStyle</a> class documentation for details.</p>
<hr /><h2>Method Documentation</h2><h3 class="fn"><a name="QStyledItemDelegate" />QStyledItemDelegate.__init__ (<i>self</i>, <a href="qobject.html">QObject</a>&#160;<i>parent</i>&#160;=&#160;None)</h3><p>The <i>parent</i> argument, if not None, causes <i>self</i> to be owned by Qt instead of PyQt.</p><p>Constructs an item delegate with the given <i>parent</i>.</p>


<h3 class="fn"><a name="createEditor" /><a href="qwidget.html">QWidget</a> QStyledItemDelegate.createEditor (<i>self</i>, <a href="qwidget.html">QWidget</a>&#160;<i>parent</i>, <a href="qstyleoptionviewitem.html">QStyleOptionViewItem</a>&#160;<i>option</i>, <a href="qmodelindex.html">QModelIndex</a>&#160;<i>index</i>)</h3><p>The <i>parent</i> argument, if not None, causes <i>self</i> to be owned by Qt instead of PyQt.</p><p>Reimplemented from <a href="qabstractitemdelegate.html#createEditor">QAbstractItemDelegate.createEditor</a>().</p>
<p>Returns the widget used to edit the item specified by
<i>index</i> for editing. The <i>parent</i> widget and style
<i>option</i> are used to control how the editor widget
appears.</p>
<p><b>See also</b> <a href="qabstractitemdelegate.html#createEditor">QAbstractItemDelegate.createEditor</a>().</p>


<h3 class="fn"><a name="displayText" />QString QStyledItemDelegate.displayText (<i>self</i>, QVariant&#160;<i>value</i>, <a href="qlocale.html">QLocale</a>&#160;<i>locale</i>)</h3><p>This function returns the string that the delegate will use to
display the <a href="qt.html#ItemDataRole-enum">Qt.DisplayRole</a>
of the model in <i>locale</i>. <i>value</i> is the value of the
<a href="qt.html#ItemDataRole-enum">Qt.DisplayRole</a> provided by
the model.</p>
<p>The default implementation uses the QLocale.toString to convert
<i>value</i> into a <a href="qstring.html">QString</a>.</p>
<p>This function is not called for empty model indices, i.e.,
indices for which the model returns an invalid <a href="qvariant.html">QVariant</a>.</p>
<p><b>See also</b> <a href="qabstractitemmodel.html#data">QAbstractItemModel.data</a>().</p>


<h3 class="fn"><a name="editorEvent" />bool QStyledItemDelegate.editorEvent (<i>self</i>, <a href="qevent.html">QEvent</a>&#160;<i>event</i>, <a href="qabstractitemmodel.html">QAbstractItemModel</a>&#160;<i>model</i>, <a href="qstyleoptionviewitem.html">QStyleOptionViewItem</a>&#160;<i>option</i>, <a href="qmodelindex.html">QModelIndex</a>&#160;<i>index</i>)</h3><p>Reimplemented from <a href="qabstractitemdelegate.html#editorEvent">QAbstractItemDelegate.editorEvent</a>().</p>


<h3 class="fn"><a name="eventFilter" />bool QStyledItemDelegate.eventFilter (<i>self</i>, <a href="qobject.html">QObject</a>&#160;<i>object</i>, <a href="qevent.html">QEvent</a>&#160;<i>event</i>)</h3><p>Reimplemented from <a href="qobject.html#eventFilter">QObject.eventFilter</a>().</p>
<p>Returns true if the given <i>editor</i> is a valid <a href="qwidget.html">QWidget</a> and the given <i>event</i> is handled;
otherwise returns false. The following key press events are handled
by default:</p>
<ul>
<li><b>Tab</b></li>
<li><b>Backtab</b></li>
<li><b>Enter</b></li>
<li><b>Return</b></li>
<li><b>Esc</b></li>
</ul>
<p>In the case of <b>Tab</b>, <b>Backtab</b>, <b>Enter</b> and
<b>Return</b> key press events, the <i>editor</i>'s data is
comitted to the model and the editor is closed. If the <i>event</i>
is a <b>Tab</b> key press the view will open an editor on the next
item in the view. Likewise, if the <i>event</i> is a <b>Backtab</b>
key press the view will open an editor on the <i>previous</i> item
in the view.</p>
<p>If the event is a <b>Esc</b> key press event, the <i>editor</i>
is closed <i>without</i> committing its data.</p>
<p><b>See also</b> <a href="qabstractitemdelegate.html#commitData">commitData</a>() and
<a href="qabstractitemdelegate.html#closeEditor">closeEditor</a>().</p>


<h3 class="fn"><a name="initStyleOption" />QStyledItemDelegate.initStyleOption (<i>self</i>, <a href="qstyleoptionviewitem.html">QStyleOptionViewItem</a>&#160;<i>option</i>, <a href="qmodelindex.html">QModelIndex</a>&#160;<i>index</i>)</h3><p>Initialize <i>option</i> with the values using the index
<i>index</i>. This method is useful for subclasses when they need a
<a href="qstyleoptionviewitem.html">QStyleOptionViewItem</a>, but
don't want to fill in all the information themselves. This function
will check the version of the <a href="qstyleoptionviewitem.html">QStyleOptionViewItem</a> and fill in
the additional values for a <a href="qstyleoptionviewitemv2.html">QStyleOptionViewItemV2</a>, <a href="qstyleoptionviewitemv3.html">QStyleOptionViewItemV3</a> and
<a href="qstyleoptionviewitemv4.html">QStyleOptionViewItemV4</a>.</p>
<p><b>See also</b> <a href="qstyleoption.html#initFrom">QStyleOption.initFrom</a>().</p>


<h3 class="fn"><a name="itemEditorFactory" /><a href="qitemeditorfactory.html">QItemEditorFactory</a> QStyledItemDelegate.itemEditorFactory (<i>self</i>)</h3><p>Returns the editor factory used by the item delegate. If no
editor factory is set, the function will return null.</p>
<p><b>See also</b> <a href="qstyleditemdelegate.html#setItemEditorFactory">setItemEditorFactory</a>().</p>


<h3 class="fn"><a name="paint" />QStyledItemDelegate.paint (<i>self</i>, <a href="qpainter.html">QPainter</a>&#160;<i>painter</i>, <a href="qstyleoptionviewitem.html">QStyleOptionViewItem</a>&#160;<i>option</i>, <a href="qmodelindex.html">QModelIndex</a>&#160;<i>index</i>)</h3><p>Reimplemented from <a href="qabstractitemdelegate.html#paint">QAbstractItemDelegate.paint</a>().</p>
<p>Renders the delegate using the given <i>painter</i> and style
<i>option</i> for the item specified by <i>index</i>.</p>
<p>This function paints the item using the view's <a href="qstyle.html">QStyle</a>.</p>
<p>When reimplementing paint in a subclass. Use the <a href="qstyleditemdelegate.html#initStyleOption">initStyleOption</a>() to
set up the <i>option</i> in the same way as the <a href="qstyleditemdelegate.html">QStyledItemDelegate</a>; the option will
always be an instance of <a href="qstyleoptionviewitemv4.html">QStyleOptionViewItemV4</a>. Please
see its class description for information on its contents.</p>
<p>Whenever possible, use the <i>option</i> while painting.
Especially its <a href="qstyleoption.html#rect-var">rect</a>
variable to decide where to draw and its <a href="qstyleoption.html#state-var">state</a> to determine if it is
enabled or selected.</p>
<p>After painting, you should ensure that the painter is returned
to its the state it was supplied in when this function was called.
For example, it may be useful to call <a href="qpainter.html#save">QPainter.save</a>() before painting and
<a href="qpainter.html#restore">QPainter.restore</a>()
afterwards.</p>
<p><b>See also</b> <a href="qitemdelegate.html#paint">QItemDelegate.paint</a>(), <a href="qstyle.html#drawControl">QStyle.drawControl</a>(), and <a href="qstyle.html#ControlElement-enum">QStyle.CE_ItemViewItem</a>.</p>


<h3 class="fn"><a name="setEditorData" />QStyledItemDelegate.setEditorData (<i>self</i>, <a href="qwidget.html">QWidget</a>&#160;<i>editor</i>, <a href="qmodelindex.html">QModelIndex</a>&#160;<i>index</i>)</h3><p>Reimplemented from <a href="qabstractitemdelegate.html#setEditorData">QAbstractItemDelegate.setEditorData</a>().</p>
<p>Sets the data to be displayed and edited by the <i>editor</i>
from the data model item specified by the model <i>index</i>.</p>
<p>The default implementation stores the data in the <i>editor</i>
widget's <a href="properties.html#qt-s-property-system">user
property</a>.</p>
<p><b>See also</b> <a href="qmetaproperty.html#isUser">QMetaProperty.isUser</a>().</p>


<h3 class="fn"><a name="setItemEditorFactory" />QStyledItemDelegate.setItemEditorFactory (<i>self</i>, <a href="qitemeditorfactory.html">QItemEditorFactory</a>&#160;<i>factory</i>)</h3><p>Sets the editor factory to be used by the item delegate to be
the <i>factory</i> specified. If no editor factory is set, the item
delegate will use the default editor factory.</p>
<p><b>See also</b> <a href="qstyleditemdelegate.html#itemEditorFactory">itemEditorFactory</a>().</p>


<h3 class="fn"><a name="setModelData" />QStyledItemDelegate.setModelData (<i>self</i>, <a href="qwidget.html">QWidget</a>&#160;<i>editor</i>, <a href="qabstractitemmodel.html">QAbstractItemModel</a>&#160;<i>model</i>, <a href="qmodelindex.html">QModelIndex</a>&#160;<i>index</i>)</h3><p>Reimplemented from <a href="qabstractitemdelegate.html#setModelData">QAbstractItemDelegate.setModelData</a>().</p>
<p>Gets data from the <i>editor</i> widget and stores it in the
specified <i>model</i> at the item <i>index</i>.</p>
<p>The default implementation gets the value to be stored in the
data model from the <i>editor</i> widget's <a href="properties.html#qt-s-property-system">user property</a>.</p>
<p><b>See also</b> <a href="qmetaproperty.html#isUser">QMetaProperty.isUser</a>().</p>


<h3 class="fn"><a name="sizeHint" /><a href="qsize.html">QSize</a> QStyledItemDelegate.sizeHint (<i>self</i>, <a href="qstyleoptionviewitem.html">QStyleOptionViewItem</a>&#160;<i>option</i>, <a href="qmodelindex.html">QModelIndex</a>&#160;<i>index</i>)</h3><p>Reimplemented from <a href="qabstractitemdelegate.html#sizeHint">QAbstractItemDelegate.sizeHint</a>().</p>
<p>Returns the size needed by the delegate to display the item
specified by <i>index</i>, taking into account the style
information provided by <i>option</i>.</p>
<p>This function uses the view's <a href="qstyle.html">QStyle</a>
to determine the size of the item.</p>
<p><b>See also</b> <a href="qstyle.html#sizeFromContents">QStyle.sizeFromContents</a>() and
<a href="qstyle.html#ContentsType-enum">QStyle.CT_ItemViewItem</a>.</p>


<h3 class="fn"><a name="updateEditorGeometry" />QStyledItemDelegate.updateEditorGeometry (<i>self</i>, <a href="qwidget.html">QWidget</a>&#160;<i>editor</i>, <a href="qstyleoptionviewitem.html">QStyleOptionViewItem</a>&#160;<i>option</i>, <a href="qmodelindex.html">QModelIndex</a>&#160;<i>index</i>)</h3><p>Reimplemented from <a href="qabstractitemdelegate.html#updateEditorGeometry">QAbstractItemDelegate.updateEditorGeometry</a>().</p>
<p>Updates the <i>editor</i> for the item specified by <i>index</i>
according to the style <i>option</i> given.</p>
<address><hr /><div align="center"><table border="0" cellspacing="0" width="100%"><tr class="address"><td align="left" width="25%">PyQt&#160;snapshot-4.9.5-9eb6aac99275 for X11</td><td align="center" width="50%">Copyright &#169; <a href="http://www.riverbankcomputing.com">Riverbank&#160;Computing&#160;Ltd</a> and <a href="http://www.qtsoftware.com">Nokia</a> 2012</td><td align="right" width="25%">Qt&#160;4.8.3</td></tr></table></div></address></body></html>